<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1、函数表达式
        // var fun  = function(aru){
        //     console.log('函数表达式');
        //     console.log(aru);
        // }
        // fun('hello');
        //(1)、fun是变量名，不是函数名
        //(2)、声明函数表达式与声明变量差不多，变量里面存的是值，函数表达式中的变量存的是函数
        //(3)、函数表达式也可以进行参数传递

        //2、函数的作用域
        //变量在某个范围内起的作用和效果，目的是提高程序的可靠性，减少命名冲突
        

        //3、全局作用域：整个script标签中  或者单独的js文件中
        //4、局部作用域：只在函数的内部
        // var num =10;  //全局作用域
        // console.log(num);
        // function fun(){
        //     var num =20; //局部作用域
        //     console.log(num);
        // }
        // fun();

        //5、全局变量。在函数内部没有声明，直接赋值的变量也是全局变量、局部变量，注意函数的形参也可以看成是局部变量。
        //区别：全局变量只有在浏览器关闭的时候才会销毁，比较占没存。局部变量只有在程序执行完成之后就会销毁，比较节约资源

        //6、es6才新增块级作用域


        //7、作用域链：内部的变量未赋值的话就近原则，到上一层中去找
        // function f1(){
        //     var num = 123;
        //     function f2(){
        //         console.log(num);
        //     }
        //     f2()
        // }
        // var num = 456;
        // f1();
        //123

        





    </script>
</body>
</html>